package com.ning.reggie;


import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.Transactional;

/**
 * Reggie 应用程序的入口类。
 */
@Slf4j // Lombok 注解，为这个类添加日志对象 log，方便输出日志信息。
@SpringBootApplication // 注解标识这是一个 Spring Boot 应用程序的主配置类。它开启了自动配置、组件扫描等功能。
@ServletComponentScan // 注解用于扫描和注册 Servlet、Filter 和 Listener 等 Servlet 组件。确保应用程序能够识别和使用通过 @WebFilter、@WebServlet 和 @WebListener 注解标注的类。
@EnableTransactionManagement //@EnableTransactionManagement注解启用了 Spring 的事务管理功能。然后，在业务服务类的方法上添加@Transactional注解，就可以实现事务管理了。
@EnableCaching //开启Spring Cache注解方式是缓存功能
public class ReggieApplication {
    public static void main(String[] args) {
        // 启动 Spring Boot 应用程序，参数为当前类和命令行参数。
        SpringApplication.run(ReggieApplication.class, args);
        // 输出日志信息，表示应用程序已启动。
        log.info("ReggieApplication started");
    }
}
